#ifndef LOCATION_H
#define LOCATION_H
/**
  * @class Location
  * @brief class to get custom location or location of players
  */
class Location
{
public:
     /** @brief Empty Constructor
     *
     *
     */
    Location(void);

    /** @brief Constructor
     *
     * @param id The id of the player/ball of which we want to get the location
     *
     */
    Location(int id);
    /** @brief Constructor
     *
     * @param x The x coordinate of a custom location
     * @param y The y coordinate of a custom location
     *
     */
    Location(int x, int y);
    /** @brief Constructor
     *
     * @param x The x coordinate of a custom location
     * @param y The y coordinate of a custom location
     * @param r The rotation of a custom location
     *
     */
    Location(int x, int y, int r);
    /** @brief Destructor
     *
     */
    //~Location();   ----not implemented

    /** @brief returns the x coordinate of the location
     *
     * @return the x coordinate of a location
     *
     */
    int getX();
    /** @brief returns the y coordinate of the location
     *
     * @return the y coordinate of a location
     *
     */
    int getY();
    /** @brief returns the rotation of the object
     *
     * @return the rotation of the object
     *
     */
    int getRotation();
    /** @brief returns the distance between two locations
     *
     * @return the distance
     *
     */
    int getDistance(Location l);
    /** @brief returns the predicted location
     *
     * @return the predicted location
     *
     */
     int getFutureLocation();  



     /** @brief sets the coordinates of the location for testing purposes
     *
     * @param the x coordinate of a location
     * @param the y coordinate of a location
     * @param the rotation
     *
     */
     void setTestLocation(int x,int y,int r);


    /** @brief Uses the SSL Vision class to determine the location of an object with identifier id
     *
     * @param id The identifier of the object
     *
     */
    void setLocation(int id);
    /** @brief sets the x coordinate of the location
     *
     * @param the x coordinate of a location
     *
     */
    void setX(int x);
    /** @brief sets the y coordinate of the location
     *
     * @param the y coordinate of a location
     *
     */
    void setY(int y);
    /** @brief sets the rotation of the object
     *
     * @param the rotation of the object
     *
     */
    void setRotation(int r);

    private:
    int x_;
    int y_;
    int rotation_;
};
#endif
